﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using JA.Negocios;
using System.IO;
using JA.Negocios.Cadastros;

namespace JA.Web.Apresentacao
{
    public partial class CadastroFoto : System.Web.UI.Page
    {
        UsuarioVO usuarioVO = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            usuarioVO = (UsuarioVO)this.Session["userActive"];
            if (usuarioVO == null || !usuarioVO.cadFot)
                this.Response.Redirect("~/BackOffice.aspx");

            if (!IsPostBack)
            {
                Util.HabilitarCampos(false, this.panelFotos);

                ClienteVO clienteVO = ClienteVO.CreateClienteVO(-1, "Todos");
                List<ClienteVO> clienteVOs = new List<ClienteVO>();
                clienteVOs.Add(clienteVO);
                clienteVOs.AddRange(ModelBO.getClientes());
                this.ddlCliente.DataSource = clienteVOs;
                this.ddlCliente.DataBind();
            }
        }

        protected void ProcessUpload(object sender, EventArgs e)
        {
            FotoBO fotoBO = new FotoBO();
            imovelxfotos foto = new imovelxfotos();

            // upload da imagem
            if (this.FileUpload1.PostedFile.FileName.Length > 0)
            {
                try
                {
                    List<imovelxfotos> fotoVOs = fotoBO.RecuperaFotos(null, int.Parse(this.txtCadId.Text));
                    if (fotoVOs!=null && fotoVOs.Find(f => f.Arquivo.ToUpper().Equals(this.FileUpload1.PostedFile.FileName.ToUpper())) != null)
                    {
                        this.LabelMensagem.Text = "Foto já existe, upload descartado!!!";
                        return;
                    }
                
                    Stream st = this.FileUpload1.PostedFile.InputStream;
                    byte[] fb = new byte[st.Length];

                    st.Read(fb, 0, int.Parse(st.Length.ToString()));
                    //fb = AsyncFileUpload.GetBytesFromStream(st);
                    // ScriptManager.RegisterClientScriptBlock(AsyncFileUpload1, AsyncFileUpload1.GetType(), "img", "top.document.getElementById('imgUpload').src='image.jpg';", true);

                    System.Drawing.Image img = Util.byteArrayToImage(fb);
                    foto.Foto       = Util.imageToByteArray(Util.MaxSize(img, 600, 450));
                    foto.FotoLarge  = Util.imageToByteArray(Util.MaxSize(img, 300, 225));
                    foto.FotoMedium = Util.imageToByteArray(Util.MaxSize(img, 150, 112));
                    foto.FotoSmall  = Util.imageToByteArray(Util.MaxSize(img,  60,  45));
                    img.Dispose();

                    foto.Mime = "image/jpeg"; //AsyncFileUploadPQ.PostedFile.ContentType;
                    foto.Arquivo = this.FileUpload1.FileName;
                    foto.IdImovel = int.Parse(this.txtCadId.Text);

                    fotoBO.SalvarFoto(foto, true);

                    this.LabelMensagem.Text = fb.Length + " bytes enviados";
                    //this.Image1.ImageUrl = "~/Imagens/DownSubFamilia.aspx?idSubFamilia=" + produtoVO.IdSubFamilia+"&controle="+DateTime.Now.Ticks;

                    this.GridViewFotos.DataSource = fotoBO.RecuperaFotos(null, int.Parse(this.txtCadId.Text));
                    this.GridViewFotos.DataBind();
                }
                catch (Exception ex)
                {
                    this.LabelMensagem.Text = ex.Message;
                }
            }
        }

        /// <summary>
        /// Manipula o evento do bot&atilde;o btnPesquisa
        /// </summary>
        /// <param name="sender">Objeto disparador do evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnPesquisa_Click(object sender, EventArgs e)
        {

            //Declara objetos
            int? idImovel = null;
            string titulo = null;
            int? idCliente = null;
            bool? ativo = null;
            bool? publicado = null;

            try
            {
                if (!string.IsNullOrEmpty(this.txtId.Text))
                {
                    idImovel = Int32.Parse(this.txtId.Text);
                }
                if (!string.IsNullOrEmpty(this.txtTitulo.Text))
                {
                    titulo = this.txtTitulo.Text;
                }
                if (this.rbAtivoSim.Checked) ativo = true;
                if (this.rbAtivoNao.Checked) ativo = false;
                if (this.rbPublicoSim.Checked) publicado = true;
                if (this.rbPublicoNao.Checked) publicado = false;


                //
                this.grvResultado.DataSource = ModelBO.getImoveis(idImovel, titulo, null, null, null, null, null, null, null, idCliente, ativo, publicado);

                //Vincula os dados
                this.grvResultado.DataBind();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        protected void imgbVisualizar_Click(object sender, ImageClickEventArgs e)
        {
            // Declara objetos
            ImovelVO imovelVO = null;
            int idImovel = 0;

            try
            {
                //
                idImovel = int.Parse(((ImageButton)sender).CommandArgument);

                //
                imovelVO = ModelBO.getImovel(idImovel, null);

                this.txtCadId.Text = idImovel.ToString();

                this.GridViewFotos.DataSource = new FotoBO().RecuperaFotos(null, int.Parse(this.txtCadId.Text));
                this.GridViewFotos.DataBind();
                this.tabImovel.ActiveTabIndex = 1;

                //
                Util.HabilitarCampos(false, this.panelFotos);

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
        protected void imgbRemoverImg_Click(object sender, ImageClickEventArgs e)
        {
            int idImovelXFoto = 0;
            idImovelXFoto = int.Parse(((ImageButton)sender).CommandArgument);

            FotoBO fotoBO = new FotoBO();
            imovelxfotos foto = new imovelxfotos();

            foto.IdImovelXFoto = idImovelXFoto;
            fotoBO.DeletaFoto(foto);

            this.LabelMensagem.Text = "Foto "+idImovelXFoto+" excluida";
            this.Image1.ImageUrl = "~/App_Themes/Padrao/imagens/backoffice/SemFoto.png";
            this.GridViewFotos.DataSource = fotoBO.RecuperaFotos(null, int.Parse(this.txtCadId.Text));
            this.GridViewFotos.DataBind();
        
        }
        protected void imgbVisualizarImg_Click(object sender, ImageClickEventArgs e)
        {
            int idImovelXFoto = 0;
            idImovelXFoto = int.Parse(((ImageButton)sender).CommandArgument);
            this.Image1.ImageUrl = "~/DownFoto.aspx?idImovelXFoto=" + idImovelXFoto + "&type=large&controle=" + DateTime.Now.Ticks;

        }
    }
}
